package com.yk.faceapplication.view;


/*
 * viewpager放在scrollview中时，滑动viewpager里的内容会不顺畅，原因是稍微有点上下的动作就会被scrollview截去了，为了解决这个问题，重写了scrollview里的方法，顺利解决。也就是重写onInterceptTouchEvent方法，定义方法判断viewpager上的滑动的动作不会被scrollview截去。
 * */
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;

public class MyScrollView extends ScrollView {
//	private GestureDetector mGestureDetector;
//	View.OnTouchListener mGestureListener;
//
//	public MyScrollView(Context context, AttributeSet attrs) {
//		super(context, attrs);
//		mGestureDetector = new GestureDetector(context, new YScrollDetector());
//		setFadingEdgeLength(0);
//	}
//
//	@Override
//	public boolean onInterceptTouchEvent(MotionEvent ev) {
//		return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
//	}
//
//	// Return false if we're scrolling in the x direction
//	class YScrollDetector extends SimpleOnGestureListener {
//		@Override
//		public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//			if (Math.abs(distanceY) > Math.abs(distanceX)) {
//				LogDebugger.info("true");
//				return true;
//			}
//			LogDebugger.info("false:Math.abs(distanceY):"+Math.abs(distanceY)+"Math.abs(distanceX):"+Math.abs(distanceX));
//			return false;
//		}
//		 /**
//         * @param e1 第1个ACTION_DOWN MotionEvent 并且只有一个
//         * @param e2 最后一个ACTION_MOVE MotionEvent 
//         * @param velocityX X轴上的移动速度，像素/秒  
//         * @param velocityY Y轴上的移动速度，像素/秒
//         * 这个方法发生在ACTION_UP时才会触发 参看GestureDetector的onTouchEvent方法源码
//         * 
//         * */
//	}
	private float xDistance, yDistance, xLast, yLast;

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            xDistance = yDistance = 0f;
            xLast = ev.getX();
            yLast = ev.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            final float curX = ev.getX();
            final float curY = ev.getY();

            xDistance += Math.abs(curX - xLast);
            yDistance += Math.abs(curY - yLast);
            xLast = curX;
            yLast = curY;

            if (xDistance > yDistance) {
                return false;
            }
        }

        return super.onInterceptTouchEvent(ev);
    }
}
